/*
 * AdministrativoFachada.java
 * Intuition Technologies. Todos los derechos reservados.
 */
package mx.com.asteca.fachada;

import java.util.List;

import mx.com.asteca.comun.dto.AdministrativoDTO;
import mx.com.asteca.comun.dto.AsentamientoDTO;
import mx.com.asteca.comun.dto.EstadoDTO;
import mx.com.asteca.comun.dto.EstatusDTO;
import mx.com.asteca.comun.dto.MunicipioDTO;

/**
 * Fachada de negocio para Administrativos
 * 
 * @author Jorge Amaro Coria
 * @version 1.0
 * @since 1.0
 * 
 */
public interface AdministrativoFachada extends
		BaseFachada<AdministrativoDTO, Integer> {

	
	List<EstatusDTO> findEstatus() throws FachadaException;
	
	/**
	 * Obtiene una lista de administrativos con los que coincida el nombre
	 * completo del parametro
	 * 
	 * @param nombreCompleto
	 * @return
	 * @throws FachadaException
	 */
	List<AdministrativoDTO> findByNombre(String nombreCompleto)
			throws FachadaException;

	/**
	 * Obtiene una lista de administrativos filtrados por el nombre completo y
	 * su clave
	 * 
	 * @param nombreCompleto
	 * @param clave
	 * @return
	 * @throws FachadaException
	 */
	List<AdministrativoDTO> findByNombreClave(String nombreCompleto,
			String clave) throws FachadaException;

	/**
	 * Obtiene una lista de administrativos filtrados por su clave
	 * 
	 * @param clave
	 * @return
	 * @throws FachadaException
	 */
	List<AdministrativoDTO> findByClave(String clave) throws FachadaException;

	/**
	 * Obtiene una lista de los distintos CPs que estan en la BD
	 * 
	 * @return
	 * @throws FachadaException
	 */
	List<Integer> getDistincCPs() throws FachadaException;

	/**
	 * Busca al municipio por su id y el id del estado
	 * 
	 * @param idMunicipio
	 * @param idEstado
	 * @return
	 * @throws FachadaException
	 */
	MunicipioDTO findMunicipio(int idMunicipio, int idEstado)
			throws FachadaException;

	/**
	 * Busca el estado por su id
	 * 
	 * @param idEstado
	 * @return
	 * @throws FachadaException
	 */
	EstadoDTO findEstado(int idEstado) throws FachadaException;

	/**
	 * Obtiene una lista de asentamientos con un CP en particular
	 * 
	 * @param cp
	 * @return
	 * @throws FachadaException
	 */
	List<AsentamientoDTO> findAsentamientosByCp(int cp) throws FachadaException;

	/**
	 * Borra un administrativo
	 * 
	 * @param dtoAdmin
	 * @throws FachadaException
	 */
	void delete(AdministrativoDTO dtoAdmin) throws FachadaException;

	/**
	 * Verifica la existencia de un empleado basado en su numero de empleado
	 * 
	 * @param noEmpleado
	 * @return
	 * @throws FachadaException
	 */
	boolean existsByNoEmpleado(String noEmpleado) throws FachadaException;

}
